package com.fy.fyspace.model.enums.aipicture;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * AI图片任务状态枚举
 *
 * @author fwq
 */
@Getter
@AllArgsConstructor
public enum AiPictureTaskStatusEnum {

  /**
   * 排队中
   */
  PENDING("PENDING", "等待中"),

  /**
   * 处理中
   */
  RUNNING("RUNNING", "处理中"),

  /**
   * 执行成功
   */
  SUCCESS("SUCCEEDED", "成功"),

  /**
   * 执行失败
   */
  FAILED("FAILED", "失败");

  /**
   * 状态码
   */
  private final String code;

  /**
   * 状态描述
   */
  private final String desc;

  /**
   * 根据状态码获取枚举值
   *
   * @param code 状态码
   * @return 对应的枚举值，如果未找到则返回 null
   */
  public static AiPictureTaskStatusEnum getByCode(String code) {
    for (AiPictureTaskStatusEnum status : values()) {
      if (status.getCode().equals(code)) {
        return status;
      }
    }
    return null;
  }

  /**
   * 判断当前状态是否为最终状态
   *
   * @return true 如果是最终状态（成功或失败），false 其他状态
   */
  public boolean isFinalStatus() {
    return this == SUCCESS || this == FAILED;
  }

  /**
   * 判断当前状态是否为进行中状态
   *
   * @return true 如果是进行中状态（排队中或处理中），false 其他状态
   */
  public boolean isInProgress() {
    return this == PENDING || this == RUNNING;
  }

  /**
   * 获取状态的显示文本
   *
   * @return 状态的中文描述
   */
  public String getDisplayText() {
    return this.desc;
  }

  @Override
  public String toString() {
    return String.format("%s(%s)", this.code, this.desc);
  }
}